<?php
/* 
 * ********* CVS HEADER ********* 
 * 
 * $RCSfile: admfoncsauvscript.php,v $ 
 * $Date: 2005/10/21 12:58:07 $ 
 * $Revision: 1.3 $ 
 * 
 * ********* CVS HEADER ********* 
 */
require_once("module/TPLN/TPLN.php"); 
$TPLN = new TPLN; 
if($action=="process"){
	$message="";
	$TPLN->Open($op_basepath."tpl/admfoncsauv.tpl");
	$fonction_query = "";
	if(is_array($fonctions)){
		$i=0;
		while($fonctions[$i]){
			$fonctions[$i] = "id_fonction='".$fonctions[$i]."'";
			$i++;	
		}
		$fonction_query = implode(" OR ",$fonctions);
	}
	$groupe_query = "";
	if(is_array($groupes)){
		$i=0;
		while($groupes[$i]){
			$groupes[$i] = "id_groupe='".$groupes[$i]."'";
			$i++;	
		}	
		$groupe_query = implode(" OR ",$groupes);
	}
	$query = "SELECT fonction.*,rportal_menu.nom FROM fonction LEFT OUTER JOIN rportal_menu ON fonction.id_menu=rportal_menu.id ";
	if($fonction_query!=""){
		$query .= "WHERE ".$fonction_query;	
	}
	$query .= " ORDER BY fonction.code_op";
	$result_fonction=rportalrequete($query) or rportalerreur ("$query","?op=");
	if(rportalnbresult($result_fonction)==0){
	    $TPLN->EraseBloc("fonction");
	    $message.="<b>Pas encore de fonction</b><br />";
	}else{
		while($fonction=rportalligne($result_fonction)){
			$message.="La fonction ".$fonction['code_op']." est sauvegardee.<br />";
			$TPLN->Parse("fonction.code_op",$fonction['code_op']);	
			$TPLN->Parse("fonction.description",$fonction['description']);
			$TPLN->Parse("fonction.menu",$fonction['nom']);
			$TPLN->Parse("fonction.fichier",$fonction['fichier']);
			$query = "SELECT * FROM droit WHERE id_fonction='".$fonction['id_fonction']."'";
			if($groupe_query!="")
			$query .= " AND (".$groupe_query.")";
			$result_droit=rportalrequete($query) or rportalerreur ("$query","?op=");
			if(rportalnbresult($result_droit)==0){
			    $TPLN->EraseBloc("fonction.droit");
			    $message.="<b>Pas encore de droit defini pour la fonction ".$fonction['code_op']."</b><br />";
			}else{
				$i=0;
				while($droit=rportalligne($result_droit)){
					$message.="Droit \"".$droit['id_groupe']."\" est sauvegarde<br />";
					$TPLN->Parse("fonction.droit.id",$i);
					$TPLN->Parse("fonction.droit.id_groupe",$droit['id_groupe']);
					$TPLN->Loop("fonction.droit");
					$i++;
				}	
			}
			$TPLN->Loop("fonction");
		}
	}
	 
	$query = "SELECT * FROM masque";
	$result_masque=rportalrequete($query) or rportalerreur ("$query","?op=");
	if(rportalnbresult($result_masque)==0){
	    $TPLN->EraseBloc("masque");
	    $message.="<b>Pas encore de masque</b><br />";
	}else{
	 	while($masque=rportalligne($result_masque)){
	 		$message.="Le masque {$masque['nom_mask']} est sauvegarde.<br />";
	 		
	 		$query = "SELECT fonction.code_op FROM fonctionsmasque,fonction WHERE id_mask='{$masque['id_mask']}' AND fonctionsmasque.id_fonc=fonction.id_fonction";
	 		$result_fonc=rportalrequete($query) or rportalerreur ("$query","?op=");
	 		if(rportalnbresult($result_fonc)==0){
	 			$TPLN->EraseBloc("masque.fonc");
	 		}else{
		 		while($fonction=rportalligne($result_fonc)){
		 			$TPLN->Parse("masque.fonc.code_op",$fonction['code_op']);
		 			$TPLN->Loop("masque.fonc");
		 		}
	 		}
	 		$query = "SELECT droitmasque.id_fonction,droitmasque.nom_droit FROM droitmasque WHERE droitmasque.id_mask='{$masque['id_mask']}'";
	 		$result_droit=rportalrequete($query) or rportalerreur ("$query","?op=");
	 		if(rportalnbresult($result_droit)==0){
	 			$TPLN->EraseBloc("masque.droitmasque");
	 		}else{
		 		while($droit=rportalligne($result_droit)){
		 			$code_op = $droit['id_fonction'];
		 			if($code_op!=9999){
		 				$query = "SELECT code_op FROM fonction WHERE id_fonction='$code_op'";
		 				$result_f=rportalrequete($query) or rportalerreur ("$query","?op=");
		 				$f=rportalligne($result_f);
		 				$code_op = $f['code_op'];	
		 			}
		 			$TPLN->Parse("masque.droitmasque.code_op",$code_op);
		 			$TPLN->Parse("masque.droitmasque.nom_droit",$droit['nom_droit']);
		 			$TPLN->Loop("masque.droitmasque");
		 		}
	 		}
	 		$query = "SELECT * FROM masque_selection WHERE id_mask='{$masque['id_mask']}'";
	 		if($groupe_query!="")
			$query .= " AND (".$groupe_query.")";
	 		$result_select=rportalrequete($query) or rportalerreur ("$query","?op=");
	 		if(rportalnbresult($result_select)==0){
	 			$TPLN->EraseBloc("masque.groupemasque");
	 		}else{
		 		while($select=rportalligne($result_select)){
		 			$TPLN->Parse("masque.groupemasque.id_groupe",$select['id_groupe']);
		 			$TPLN->Parse("masque.groupemasque.nom_droit",$select['nom_droit']);
		 			$TPLN->Loop("masque.groupemasque");
		 		}
	 		}
	 		$TPLN->Parse("masque.nom",$masque['nom_mask']);
	 		$TPLN->Loop("masque");
	 	}
	}
	
	$query="SELECT * FROM droitmasquenom";
	$result_def=rportalrequete($query) or rportalerreur ("$query","?op=");
	if(rportalnbresult($result_def)==0){
	    $TPLN->EraseBloc("defdroit");
	    $message.="<b>Pas encore de definition de droit</b><br />";
	}else{
	 	while($defdroit=rportalligne($result_def)){
	 		$message.="Definition de droit {$defdroit['nom']} sauvegarde.<br>";
	 		$TPLN->Parse("defdroit.nom",$defdroit['nom']);
	 		$TPLN->Parse("defdroit.description",$defdroit['description']);
	 		$TPLN->Loop("defdroit");
	 	}
	}
	$nom=time();
	$fichier=fopen("install/fonction$nom.ins","w");
	fputs($fichier,$TPLN->Output());
	fclose($fichier);
	
	$TPLN->Open($op_basepath."tpl/admfoncsauv.html");
	$TPLN->IncludeFile("header","environnement/$session[environnement]/header.php"); 
	$TPLN->IncludeFile("footer","environnement/$session[environnement]/footer.php");
	
	require_once(get_path_module("admin"));
	$pc = new panneau_controle();
	$pc->calculRubriqueParFonction($op);
	$TPLN->Parse("panneau_controle",$pc->retourneEntete());
	
	$TPLN->Parse("fichier","install/fonction$nom.ins");
	$TPLN->Parse("message",$message);
	$TPLN->Write();
	exit;
}
$TPLN->Open($op_basepath."tpl/admfoncsauvform.html");
$TPLN->IncludeFile("header","environnement/$session[environnement]/header.php"); 
$TPLN->IncludeFile("footer","environnement/$session[environnement]/footer.php");

require_once(get_path_module("admin"));
$pc = new panneau_controle();
$pc->calculRubriqueParFonction($op);
$TPLN->Parse("panneau_controle",$pc->retourneEntete());

$query = "SELECT * FROM fonction ORDER BY code_op";
$result_fonction=rportalrequete($query) or rportalerreur ("$query","?op=");
if(rportalnbresult($result_fonction)==0){
    $TPLN->ParseBloc("liste","Pas encore de fonction");
}else{
	while($fonction=rportalligne($result_fonction)){
		$TPLN->Parse("liste.fonctionid",$fonction['id_fonction']);
		$TPLN->Parse("liste.code_op",$fonction['code_op']);
		$TPLN->Parse("liste.description",$fonction['description']);
		$TPLN->Loop("liste");		
	}
}
$query = "SELECT * FROM groupe ORDER BY nom";
$result_groupe=rportalrequete($query) or rportalerreur ("$query","?op=");
if(rportalnbresult($result_groupe)==0){
    $TPLN->ParseBloc("groupe","Pas encore de groupe");
}else{
	while($groupe=rportalligne($result_groupe)){
		$TPLN->Parse("groupe.groupeid",$groupe['id']);
		$TPLN->Parse("groupe.nom",$groupe['nom']);
		$TPLN->Parse("groupe.description",$groupe['description']);
		$TPLN->Loop("groupe");		
	}
}
$TPLN->Write();
?>